The field of the invention is programmable controllers such as those disclosed in U.S. Pat. Nos. 3,810,118 and 3,942,158 and control systems which incorporate programmable controller techniques such as the numerical control systems described in copending U.S. Patent Application Ser. No. 728,000, filed on Sept. 29, 1976 and entitled "Industrial Control Processor System" and U.S. Pat. No. 3,810,104 entitled "Programmable Magnetics for a Numerical Control System".
Programmable controllers such as those described in the above cited patents perform complex control functions in accordance with a series of controller instructions which are continuously and sequentially read from a memory and executed. These controller instructions direct the system to examine the condition of various sensing devices such as limit switches and photoelectric cells, compare these conditions to the conditions specified in the control program, and accordingly, direct the system to energize or deenergize operating devices such as solenoids and motor starters. Programmable controllers are characterized by their distinctive instruction set which facilitates the development of the control program directly from ladder diagrams or Boolean expressions.
A number of procedures and apparatus have been employed to assist the user in developing a control program for a programmable controller. In U.S. Pat. No. 3,813,649 entitled "Controller Program Editor" a program loader suitable for connection with a programmable controller is described which enables the user to enter a control program into the controller memory and allows the user to change, or edit the stored control program. Among these editing features are ones which allow the user to create a gap in the stored control program for the insertion of an additional controller instruction and to close a gap in the stored control program resulting from the deletion, or removal of a controller instruction. These gap and ungap editing functions involve the automatic shifting of portions of the control program within the controller memory, with the result that the memory location of any particular controller instruction may be changed many times during the editing of the control program.